﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Portfolio.Repository;
using Portfolio.Entities;
using Portfolio.BL.Common;

namespace Portfolio.BL.Interfaces
{
    public interface ICategoriesBL
    {
        IList<CategoriesDropDownListV> ReturnCategoriesDDL(int? articleCategoryIDID);

        IList<ArtcileCategoriesGridV> SortBy(IQueryable<ArtcileCategoriesGridV> source, string sortExpression, string sortDirection);
        IList<ArtcileCategoriesGridV> ReturnCategoryBySearch(string title, int? idCategory, int? status, bool? active, string sortExpression, string sortDirection);        

        ArticleCategoryT ReturnCategoryById(int idArticleCategory);
        int ReturnMaxCountSeqCategoryById(int idArticleCategory);
        void UpdateCategory(ArticleCategoryT ArticleCategory);
        //void DeleteCategory(ArticleCategoryT ArticleCategory, out string publishInformation);
        void DeleteCategory(ArticleCategoryT ArticleCategory);
        //int InsertCategory(ArticleCategoryT ArticleCategory, out string publishInformation, out string publishException);
        //int InsertCategory(ArticleCategoryT ArticleCategory,ref string[] publishInformation);
        int InsertCategory(ArticleCategoryT ArticleCategory);
        void UpSeqCategory(ArticleCategoryT ArticleCategory);
        void DownSeqCategory(ArticleCategoryT ArticleCategory);

        IDictionary<int, string> ReturnStatusEnum();
        IDictionary<int, string> ReturnActiveEnum();
        IDictionary<int, string> ReturnPageSizeEnum();
    }
}
